/**
 * Project Name:OrgMapper
 * File Name:OrgMapper.java
 * Package Name:com.bwda.dsrs.systemservice.mapper;
 * Date:2019年4月28日
 * Copyright (c) 2019, 江苏保旺达软件有限公司 All Rights Reserved.
 *
 */
package com.bwda.dsrs.systemservice.mapper;

import com.bwda.dsrs.systemservice.domain.form.org.OrgCreateForm;
import com.bwda.dsrs.systemservice.domain.form.org.OrgTreeForm;
import com.bwda.dsrs.systemservice.domain.form.org.OrgUserAdminForm;
import com.bwda.dsrs.systemservice.domain.form.org.OrgUserTreeForm;
import com.bwda.dsrs.systemservice.domain.po.org.OrgPo;
import com.bwda.dsrs.systemservice.domain.condition.org.OrgCondition;
import com.bwda.dsrs.systemservice.domain.vo.org.OrgVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 组织菜单管理
 *
 * @author youzhen
 * @date 2019年4月28日
 */
public interface OrgMapper extends BaseMapper<OrgPo, OrgCondition> {

    /**
     * 获得组织管理员
     * @return
     */
    List<OrgUserAdminForm> queryAdmin();

    /**
     * 获得ID号
     * @return
     */
    Integer queryId();

    /**
     * 查询组织树
     * @param orgTreeForm
     * @return
     */
    List<OrgTreeForm> queryTreeList(OrgTreeForm orgTreeForm);

    /**
     * 查询组织
     * @param form
     * @return
     */
    List<OrgTreeForm> queryOrgList(OrgTreeForm form);

    /**
     * orgCode查询组织
     * @param id
     * @return
     */
    List<OrgTreeForm> queryTreeChildren(Integer id);

    /**
     * 查询组织人员
     * @param orgId
     * @return
     */
    int queryOrgUser(Integer orgId);

    /**
     * 查询是否含有子节点
     * @param orgId
     * @return
     */
    List<OrgPo> queryOrgChildren(Integer orgId);

    /**
     * 查询子节点ID
     * @param id
     * @return
     */
    Integer[] queryChildren(int id);

    /**
     * 查询组织
     * @return
     */
    List<OrgUserTreeForm> queryUserOrgList();

    /**
     * 获得组织管理员
     * @param id
     * @return
     */
    List<OrgUserAdminForm> queryOrgAdmin(Integer id);

    /**
     * 获得组织
     * @param userCode
     * @return
     */
    OrgCreateForm queryOrg(String userCode);

    /**
     * 获得组织
     * @param id
     * @return
     */
    OrgCreateForm queryByIdOrg(Integer id);


    /**
     * 获得批量组织
     * @param orgIds
     * @return
     */
    List<OrgCreateForm> queryOrgById(Integer[] orgIds);

    /**
     * 获得单个组织
     * @param id
     * @return
     */
    List<OrgUserTreeForm> queryOrgSingleTree(Integer id);

    /**
     * 根据UserCode获取所有上级组织（包括本组织）
     * @param userCode
     * @return
     */
    List<OrgCreateForm> queryParentOrgByUserCode(String userCode);

    /**
     * 判断组织是否存在
     * @param orgCondition
     * @return
     */
    List<OrgPo> queryName(OrgCondition orgCondition);

    /**
     * 更改组织管理员
     * @param userCode
     * @param orgId
     * @return
     */
    void updateOrgAdmin(@Param("userCode") String userCode, @Param("orgId") Integer orgId);


    /**
     * 更改组织管理员
     * @param userCode
     * @return
     */
    List<OrgPo> queryOrgByUserCode(String userCode);
}